import { Controller, Get, Query, Inject, Body, Post } from '@nestjs/common';
import { AppService } from './test.service';
import { ApiOperation } from '@nestjs/swagger';

// @Query 装饰器：用于提取 URL 查询参数，通常在 GET 请求中使用。例如，可以使用 @Query('id') 装饰器来提取名为 id 的查询参数。
// @Body 装饰器：用于提取请求正文中的数据，通常在 POST、PUT 或 PATCH 请求中使用。例如，可以使用 @Body() 装饰器来获取请求正文中的所有数据。
// @Param: 用于获取 URL的动态 参数。例如，/users/:id 中的 id 参数，可以在控制器中通过 @Param('id') 装饰器来获取。
// @Headers: 用于获取请求头信息。例如，Content-Type 头可以在控制器中通过 @Headers('Content-Type') 装饰器来获取。
// @Res: 用于注入响应对象。 通过使用该装饰器，可以获取响应对象并修改响应结果。
// @Req: 用于注入请求对象。 POST使用JSON传递 GET使用?拼接传递
// @Session: 用于获取 express-session 库中的会话信息。例如，在控制器方法中可以使用 @Session() session 来获取会话对象中存储的信息。
// @Redirect: 用于重定向到新的 URL。例如，使用 @Redirect('/users') 可以将响应重定向到在控制器中定义的 /users 路由。
// @HttpCode: 用于设置 HTTP 响应的状态码。例如，可以使用 @HttpCode(200) 将响应的状态码设置为 200。
// @Headers: 用于设置响应头信息。例如，可以使用 @Headers('Cache-Control', 'public, max-age=3600') 来设置响应头中的 Cache-Control 信息。

@Controller('api') // 当前文件路由前缀  我们就可以通过api/ceshi 来访问到测试的这个接口
export class AppController {
  constructor(
    private readonly appService: AppService,
    @Inject('Config') private shopName: string,
  ) {}
  // this.appService = new AppService() 上面的只是一个语法糖的表示
  // getHello(): string {
  //   return this.appService.getHello();
  // }
  @ApiOperation({
    summary: '获取名称',
  })
  @Post('/config')
  getConfig(@Query('id') query: any) {
    return this.shopName;
  }

  @Get('/addTest')
  addTest(@Query('id') query: any) {
    // return this.appService.addTest();
    return '111';
  }
}
